import { message } from "antd";
import axios from "axios";
import { getToken, removeToken } from "./storage";
import history from "./history";

// 创建axios实例
const instance = axios.create({
    // 基地址 + 超时
    baseURL: 'http://geek.itheima.net',
    timeout: 5000
})


// 添加请求拦截器
// 主要是为了添加 请求头 token
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
      // 判断 有无 token
      const token = getToken()
      if(token) {
        config.headers.Authorization = `Bearer ${token}` 
      }
      return config
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // token过期问题
    if(error.response.status === 401) {
      // 1.删除本地token
      removeToken()
      // 2.提示
      message.warn('token失效')
      // 3.跳转login
      history.push('/login')

    }
    return Promise.reject(error);
  });

export default instance